// 父组件
<template>
  <div class="act-form">
    <iframe :src="src" ref="iframe" style="width:500px; height:500px;"></iframe>
    <div @click="sendMessage">向 iframe 发送信息</div>
  </div>
</template>

<script>

export default {
  data () {
    return {
      src: '',
      iframeWin: {}
    }
  },
  mounted () {
    this.iframeWin = this.$refs.iframe.contentWindow
    this.$nextTick(() => {
      // 在外部 Vue 的 window 上添加 postMessage 的监听，并且绑定处理函数 handleMessage
      window.addEventListener('message', this.handleMessage)
    })
  },
  created(){
     this.src ='/#/sys/menutree_check' 
  },
  destroyed () {
      // 注意移除监听！注意移除监听！注意移除监听！
      window.removeEventListener('message', this.handleMessage)
  },
  methods: {
    sendMessage () {
      // 外部vue向iframe内部传数据
      this.iframeWin.postMessage({
        cmd: 'doSomething',
        params: {}
      }, '*')
    },
    handleMessage (event) {
      // 根据上面制定的结构来解析 iframe 内部发回来的数据
      const data = event.data
      switch (data.cmd) {
        case 'ready-for-receiving':
          // 业务逻辑
          break
      }
    }
  }
}
</script>
